def get_point_on_floor(polygon):
    # the first point in the polygon is the camera
    camera = polygon[0]
    
    # we want the point in the middle of the polygon
    # not including the camera
    # the middle point is (mx, my, mz)
    num_points = float(len(polygon[1:]))
    mx = 0
    my = 0
    mz = 0
    for p in polygon[1:]:
        mx = p.x
        my = p.y
        mz = p.z
    mx /= num_points
    my /= num_points
    mz /= num_points
    
    # find the vector from camera to middle point
    vx = mx - camera.x
    vy = my - camera.y
    vz = mz - camera.z
    
    # find the ratio of the two triangles
    ratio = camera.z / (camera.z - mz)
    
    # scale the small vector
    vx *= ratio
    vy *= ratio
    vz *= ratio
    
    # translate the new vector
    fx = vx + camera.x
    fy = vy + camera.y
    fz = vz + camera.z
    
    # done
    return (fx, fy, fz)
